#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
配置文件读写工具类。
配置文件格式为系统配置文件格式
[模块一]
配置项=值
配置项=值
@author:zhuyan
@file: configutil.py
@time: 2018/08/19
"""
import configparser


class ConfigUtil:

    def __init__(self):
        self.__config = configparser.ConfigParser()

    def read_config(self, file_path):
        """
        读取配置文件，并打印出所有模块，选项，和内容
        :param file_path:
        :return:
        """
        self.__config.read(file_path, encoding="utf-8")
        sections = self.__config.sections()
        for section in sections:
            print(str(section).center(20, "*"))
            content = self.__config.items(section)  # 返回所有配置项，内容项
            print(content)

    def get_opt_value(self, model_name, option):
        """
        获取选项值
        :param model_name:
        :param option:
        :return:
        """
        value = None
        if self.__config.has_option(model_name, option):
            value = self.__config.get(model_name, option)
        else:
            print("没有指定模块[%s]或配置项:%s" % (model_name, option))
        return value

    def write_config(self, file_name):
        """
        将配置对象写到config文件当中
        :param file_name:
        :return:
        """
        with open(file_name, 'a+', encoding='utf-8') as configfile:
            self.__config.write(configfile)

    def add_section(self, section_name):
        """
        添加模块
        :param section_name:
        :return:
        """
        self.__config.add_section(section_name)

    def set_option(self, section_name, opt_name, opt_value):
        """
        如果没有指定模块，则创建。如果没有选项，则添加，否则修改。
        :param section_name:
        :param opt_name:
        :param opt_value:
        :return:
        """
        if not self.__config.has_section(section_name):
            self.add_section(section_name)
        self.__config.set(section_name, opt_name, opt_value)


if __name__ == '__main__':
    util = ConfigUtil()
    # 读取文件
    util.read_config("config.ini")
    print(util.get_opt_value("模块一", "name"))
    print(util.get_opt_value("模块jiu", "age"))

    # 写文件
    # util.add_section("模块一")
    # util.set_option("模块二", "标签1", "文本内容")
    # util.set_option("模块二", "标签2", "文本内容")
    # util.set_option("模块二", "标签1", "文本内容222")
    # util.write_config("test.cfg")